package com.qf.taobei.service;


import com.qf.taobei.entity.RespBean;
import com.qf.taobei.entity.Store;
import com.qf.taobei.entity.User;
import com.qf.taobei.entity.bo.StoreUser;
import com.qf.taobei.entity.vo.Vo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface StoreService {
    /**
     * 注册店铺
     * @param store
     * @param request
     * @return
     *
     */
    RespBean addStore(Store store, HttpServletRequest request, MultipartFile file);

    /**
     * 根据店铺id注销多个店铺
     * @param storeIds
     * @return
     */
    RespBean deleteStoresTrue(int[] storeIds);


    /**
     * 根据用户id查询店铺
     * @param uid
     * @return
     */
    RespBean queryStoreByUId(int uid);

    /**
     * 查询当前用户的店铺
     * @param request
     * @return
     */
    RespBean queryStoreBySessionId(HttpServletRequest request);

    /**
     * 根据店铺id查询店铺
     * @param storeId
     * @return
     */
    RespBean queryStoreByStoreId(int storeId);

    /**
     * 保存storeId到session中
     * @param storeId
     * @param request
     * @return
     */
    RespBean saveStoreId(int storeId,HttpServletRequest request);

    /**
     * 根据店铺id修改店铺信息
     * @param
     * @return
     */
    RespBean updateStoreByStoreId(HttpServletRequest request,Store store,MultipartFile file);

    /**
     * 转让店铺
     * @param user
     * @param yourName
     * @param yourPassword
     * @param request
     * @return
     */
    RespBean tranferStore(User user,String yourName,String yourPassword,HttpServletRequest request);

    /**
     * 注销店铺（删除店铺）
     * @param tel
     * @param password
     * @return
     */
    RespBean lougoutStore(String tel,String password,HttpServletRequest request);

    /**
     * 根据单个店铺id伪删除店铺信息
     * @param storeId
     * @return
     */
    RespBean deleteStoreByStoreIdFalse(int storeId);

    /**
     * 根据多个店铺id伪删除店铺信息
     * @param storeIds
     * @return
     */
    RespBean deleteStoreByStoreIdsFalse(int[] storeIds);

    /**
     * 查询未删除的店铺信息
     * @param storeUser ( 对象属性未赋值则查询所有 也可根据店铺id 店铺状态 店铺等级，店家id 店家名字，店家电话查询 )
     * @return
     */
    RespBean quertStoreUser(StoreUser storeUser);

    /**
     * 查询已删除的店铺信息
     * @param storeUser ( 对象属性未赋值则查询所有 也可根据店铺id 店铺状态 店铺等级，店家id 店家名字，店家电话查询 )
     * @return
     */
    RespBean queryStoreUserWolfer(StoreUser storeUser);

    /**
     * 根据用户id获取订单总数、商品总数、总收入
     * @param userId
     * @return
     */
    RespBean getStoreTotalByUserId(int userId);

    /**
     * 获取所有商品
     * @return
     */
    public Vo queryAllProduct();

    /**
     * 分页获取商品
     * @param page
     * @param limit
     * @return
     */
    Vo queryProductLimit(HttpServletRequest request,int page,int limit,Integer flag);

    /**
     * 根据店铺id分页获取商品
     * @param request
     * @param page
     * @param limit
     * @param flag
     * @return
     */
    Vo queryProductLimitByStoreId(HttpServletRequest request,int page,int limit,Integer flag);

    /**
     * 根据类型id查询商品
     * @param id
     * @Param 商品状态：上架1、下架2、审核3
     * @return
     */
    Vo queryProductByTypeId(HttpServletRequest request,int id,int page,int limit,Integer flag);

    /**
     * 根据类型id和店铺id查询商品
     * @param id
     * @Param 商品状态：上架1、下架2、审核3
     * @return
     */
    Vo queryProductByTypeIdAndStoreId(HttpServletRequest request,int id,int page,int limit,Integer flag);

    /**
     * 根据session的id获取商品id和名字
     * @param request
     * @return
     */
    RespBean queryProductIdAndName(HttpServletRequest request);

    /**
     *获取所有店铺
     * @author ldm
     * @return
     */
    RespBean selectAllStore();

    /**
     *根据店铺名获取店铺
     * @author ldm
     * @return
     */
    RespBean getStoreByName(String naem);

    /**
     *根据店铺状态获取店铺
     * @author ldm
     * @return
     */
    List<Store> queryStoreByFlag(Integer flag);

    /**
     *修改店铺状态
     * @author ldm
     * @return
     */
    Integer updateStoreFlagById(Integer id);
}
